#include "Matrix.h"

void producto_matrices (double a[3][3],double b[3][3],double res[3][3])
{
	res[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];
	res[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0];
	res[2][0]=a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];

	res[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];
	res[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1];
	res[2][1]=a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1];

	res[0][2]=a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];
	res[1][2]=a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];
	res[2][2]=a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];
}

void producto_matrices (double a[3][3],double b[3],double res[3])
{
	res[0]=a[0][0]*b[0]+a[0][1]*b[1]+a[0][2]*b[2];
	res[1]=a[1][0]*b[0]+a[1][1]*b[1]+a[1][2]*b[2];
	res[2]=a[2][0]*b[0]+a[2][1]*b[1]+a[2][2]*b[2];
}

void producto_matriz_escalar(double a[3][3], double constante, double res[3][3])
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			res[i][j]=a[i][j]*constante;
}

void suma_matrices(double a[3][3],double b[3][3],double res[3][3])
{
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			res[i][j]=a[i][j]+b[i][j];
}

double sarrus(double a[3][3])
{
	return 
		(a[0][0]*a[1][1]*a[2][2])+
		(a[1][0]*a[2][1]*a[0][2])+
		(a[2][0]*a[0][1]*a[1][2])-
		(a[2][0]*a[1][1]*a[0][2])-
		(a[0][0]*a[2][1]*a[1][2])-
		(a[1][0]*a[0][1]*a[2][2]);
}

double magnitud(double a[3])
{
	return sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);
}

void Y(double k, double t, double v,double Y[3][3])
{
	Y[0][0]=0;
	Y[1][0]=k*cos(v);
	Y[2][0]=-k*sin(v);

	Y[0][1]=-k*cos(v);
	Y[1][1]=0;
	Y[2][1]=t;

	Y[0][2]=k*sin(v);
	Y[1][2]=-t;
	Y[2][2]=0;
}

void y(double k, double t, double v,double y[3])
{
	y[0]=t;
	y[1]=k*sin(v);
	y[2]=k*cos(v);
}

void Tr(double alfa, double beta, double res[3])
{
	double delta=beta-alfa;
	
	double a[3][3];
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			if(i==j)a[i][j]=delta;
			else a[i][j]=0;
	
	double b[3][3];

}